package com.sort;

import java.util.Random;

/**
 * @author zsj
 * @version 1.0
 * @date 2024/5/11 16:00
 * @description 选择排序
 */
public class SelectionSort {

    public static void main(String[] args) {
        int[] arr = new int[10000];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Random().nextInt();
        }
        long start = System.currentTimeMillis();
        selection(arr);
        long end = System.currentTimeMillis();
        System.out.println("消耗时间" + (end - start) + "毫秒");

        long start2 = System.currentTimeMillis();
        BubbleSort.bubble(arr);
        long end2 = System.currentTimeMillis();
        System.out.println("消耗时间" + (end2 - start2) + "毫秒");
    }

    //感觉和冒泡差不多
    //每次选择最大元素 交换到数组末尾
    //交换一次数组末尾--
    public static void selection(int[] arr) {
        int end = arr.length - 1;
        while (end != 0) {
            int max_index = -1;//记录最大值下标索引
            long max = Long.MIN_VALUE;
            for (int i = 0; i <= end; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                    max_index = i;
                }
            }
            //循环结束后
            swap(arr, max_index, end);
            end--;
        }
    }


    /**
     * 交换元素
     *
     * @param arr 数组
     * @param a   a索引
     * @param b   b索引
     */
    public static void swap(int[] arr, int a, int b) {
        int t = arr[a];
        arr[a] = arr[b];
        arr[b] = t;
    }
}
